package sistema.controleVendas.telas;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.Rectangle;
import java.text.DecimalFormat;
import java.util.Vector;

import javax.swing.JLabel;
import javax.swing.JTextField;

import sistema.controleVendas.controladores.GerenciarProdutos;
import sistema.controleVendas.entidades.Produto;

import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class TelaVendaBuscaProdutos extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton adicionarB = null;
	private JButton finalizarB = null;
	private JLabel nomeT = null;
	private JTextField nome = null;
	private GerenciarProdutos gp = null;  //  @jve:decl-index=0:
	private JScrollPane produtosSP = null;
	private JTable produtosT = null;
	private JLabel quantidadeT = null;
	private JTextField quantidade = null;
	private DefaultTableModel produtos = null;
	private Vector prod = null;  //  @jve:decl-index=0:
	/**
	 * This is the default constructor
	 */
	public TelaVendaBuscaProdutos() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(507, 313);
		this.setContentPane(getJContentPane());
		this.setTitle("Busca Produtos");
		gp = new GerenciarProdutos();
		listarTodosProdutos();
	}
	
	public void listarTodosProdutos(){
		produtos.setRowCount(0);
		for(Produto p1 : gp.listarProdutos()){
			
			double valor = p1.getPreco();
			DecimalFormat df = new DecimalFormat("0.00");
			df.format(valor);
			
			prod = new Vector();
			prod.add(p1.getId());
			prod.add(p1.getDescricao());
			prod.add(valor);
			produtos.addRow(prod);
		}
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			quantidadeT = new JLabel();
			quantidadeT.setBounds(new Rectangle(30, 240, 68, 16));
			quantidadeT.setText("Quantidade:");
			nomeT = new JLabel();
			nomeT.setBounds(new Rectangle(12, 18, 36, 16));
			nomeT.setText("Nome:");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getAdicionarB(), null);
			jContentPane.add(getFinalizarB(), null);
			jContentPane.add(nomeT, null);
			jContentPane.add(getNome(), null);
			jContentPane.add(getProdutosSP(), null);
			jContentPane.add(quantidadeT, null);
			jContentPane.add(getQuantidade(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes adicionarB	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getAdicionarB() {
		if (adicionarB == null) {
			adicionarB = new JButton();
			adicionarB.setBounds(new Rectangle(216, 240, 91, 25));
			adicionarB.setText("Adicionar");
			adicionarB.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					int numLinha = produtosT.getSelectedRow();
					int id = Integer.parseInt(produtosT.getValueAt(numLinha, 0).toString());
					Main.getMain().getTv().adicionarProduto(id, Integer.parseInt(quantidade.getText()));
					
				}
			});
		}
		return adicionarB;
	}

	/**
	 * This method initializes finalizarB	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getFinalizarB() {
		if (finalizarB == null) {
			finalizarB = new JButton();
			finalizarB.setBounds(new Rectangle(330, 240, 91, 25));
			finalizarB.setText("Finalizar");
			finalizarB.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					dispose();
				}
			});
		}
		return finalizarB;
	}

	/**
	 * This method initializes nome	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getNome() {
		if (nome == null) {
			nome = new JTextField();
			nome.setBounds(new Rectangle(54, 18, 277, 19));
			nome.addKeyListener(new java.awt.event.KeyAdapter() {
				public void keyReleased(java.awt.event.KeyEvent e) {
					if(nome.getText().equalsIgnoreCase("")){
						listarTodosProdutos();
					}else{
						produtos.setRowCount(0);
						for(Produto p1 : gp.buscarProdutos(nome.getText())){
							prod = new Vector();
							prod.add(p1.getId());
							prod.add(p1.getDescricao());
							produtos.addRow(prod);
						}
					}
						
					
				}
			});
		}
		return nome;
	}

	/**
	 * This method initializes produtosSP	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getProdutosSP() {
		if (produtosSP == null) {
			produtosSP = new JScrollPane();
			produtosSP.setBounds(new Rectangle(12, 48, 463, 181));
			produtosSP.setViewportView(getProdutosT());
		}
		return produtosSP;
	}

	/**
	 * This method initializes produtosT	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getProdutosT() {
		if (produtosT == null) {
			produtos = new DefaultTableModel();
			produtos.addColumn("Id");
			produtos.addColumn("Nome");
			produtos.addColumn("Preco");
			produtos.addColumn("Quantidade");
			produtosT = new JTable(produtos);
		}
		return produtosT;
	}

	/**
	 * This method initializes quantidade	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getQuantidade() {
		if (quantidade == null) {
			quantidade = new JTextField();
			quantidade.setBounds(new Rectangle(102, 240, 55, 19));
			quantidade.setText("1");
		}
		return quantidade;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
